package com.jerry.api.controller;

import com.jerry.api.entity.*;
import com.jerry.api.service.JStudentService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * @Date: 2025/4/7 14:25
 * @Created: by 王永发
 * @Description: TestControllers
 */
@Api(tags = {"学生信息"})
@RestController()
@RequestMapping("/api/student")
public class JStudentController {

    @Autowired
    JStudentService studentService;

    /**
     * @param grade 为年级
     * @return 通过年级返回近三年的数据
     */
    @GetMapping("/getStudentNumber")
    public String getStudentNumber(String grade) {
        return studentService.getStudentNumber(grade);
    }

    /**
     * @param grade 为年级
     * @return 通过年级返回男女各自的人数
     */
    @GetMapping("/getGenderNumber")
    public List<JGenderNumber> getGenderNumber(String grade) {
        return studentService.getGenderNumber(grade);
    }

    /**
     * 返回所有专业名称
     */

    @GetMapping("/getMajor")
    public List<JMajor> getMajor() {
        return studentService.getMajor();
    }

    /**
     * 通过给定的年级、学院/系，返回当年的男女总数、上一年的男女总数
     *
     * @param year 为年级 collage 为年级
     */

    @GetMapping("/getPeopleTotal")
    public List<Map<String, Object>> getPeopleTotal(String year, String collage) {
        return studentService.getPeopleTotal(year, collage);
    }

    /**
     * 获取该学年所有专业
     *
     * @param year 为年级
     * @return 返回id为专业id, name为专业名称
     */
    @GetMapping("/getYearMajor")
    public List<JYearMajor> getYearMajor(String year) {
        return studentService.getYearMajor(year);
    }

    /**
     * 获取该年男女比例最失衡的专业
     *
     * @param year 为年级
     * @return 返回major为专业名称, number为相差的数量
     */
    @GetMapping("/getMajorDiff")
    public List<JMajorDiff> getMajorDiff(String year) {
        return studentService.getMajorDiff(year);
    }

    /**
     * 获取该年级各个省份男女数量的总数
     *
     * @param year 为年级
     * @return 返回major为专业名称, number为相差的数量
     */
    @GetMapping("/getProGenderCount")
    public List<JProGenderCount> getProGenderCount(String year) {
        return studentService.getProGenderCount(year);
    }
}



